package com.colorlight.cloud.gateway.service;


import com.colorlight.cloud.gateway.api.message.constraint.schedule.ScheduleActions;
import com.colorlight.cloud.gateway.api.message.model.CommandData;

/**
 * @author Demon
 * @date 18/7/2023  下午4:16
 */
public interface CommandService {
	/**
	 * 构建可直接下发得指令
	 *
	 * @param scheduleActions 消息实体
	 * @param topic           主题
	 * @param type            消息类型
	 * @param screenId        屏幕标识
	 * @param seqId           指令id
	 * @return 支持下发的指令
	 **/
	CommandData<? extends ScheduleActions> builderCommandData(
			ScheduleActions scheduleActions,
			String topic,
			String type,
			String screenId,
			Long seqId
	);
	
	
	
	/**
	 * 不兼容更新 新版协议 需要加入的 型号 根据 ScheduleActions 已经无法识别设备类型
	 * 指令下发
	 *
	 * @param scheduleActions 消息实体
	 * @param deviceName      终端名字（三元组之一）
	 * @param screenId        屏幕标识
	 * @author Demon
	 * @date 19/7/2023/上午9:27
	 **/
	Long publish(ScheduleActions scheduleActions,
				 String deviceName,
				 String productKey,
				 String screenId,
				 Long seqId);
}
